package com.yuandian.ops.workbench.service;

import com.yuandian.ops.workbench.po.AlarmDetailParams;
import com.yuandian.ops.workbench.vo.AlarmDetailOverviewVo;
import com.yuandian.ops.workbench.vo.AlarmDetailVo;
import com.yuandian.ops.workbench.vo.BusiAreaAlarmStatVo;
import com.yuandian.utils.PageDataInfo;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;

/**
 * BPM 4.0
 * 运维工作台 - 告警详情分析
 */
public interface IAlarmDetailAnalysisService {

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-顶部折线图数据
     * @param params 请求参数
     * @return
     */
    AlarmDetailVo getAlarmDetailTrend(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-告警总览
     * @param params 请求参数
     * @return
     */
    AlarmDetailOverviewVo getAlarmDetailOverview(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-告警详情步骤分析
     * @param params 请求参数
     * @return
     */
    PageDataInfo getStepAnalysis(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-告警详情步骤分析Excel
     * @param params 请求参数
     * @return
     */
    void getStepAnalysisExcel(AlarmDetailParams params, HttpServletResponse response);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-告警详情步骤分析-下钻告警详情列表
     * @param params 请求参数
     * @return
     */
    PageDataInfo getStepAnalysisAlarmDetail(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-告警详情步骤分析-下钻告警详情列表
     * @param params 请求参数
     * @return
     */
    void getStepAnalysisAlarmDetailExcel(AlarmDetailParams params, HttpServletResponse response) throws ParseException, IOException;

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-告警分类统计
     * @param params 请求参数
     * @return
     */
    PageDataInfo getAlarmClassificationStatistics(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-告警分类统计-下载
     * @param params 请求参数
     * @return
     */
    void getAlarmClassificationStatisticsExcel(AlarmDetailParams params, HttpServletResponse response);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-影响用户统计
     * @param params 请求参数
     * @return
     */
    PageDataInfo getAffectUser(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-影响用户统计-下载
     * @param params 请求参数
     * @return
     */
    void getAffectUserExcel(AlarmDetailParams params, HttpServletResponse response);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-影响系统统计
     * @param params 请求参数
     * @return
     */
    PageDataInfo getAffectSystem(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-影响系统统计-下载
     * @param params 请求参数
     * @return
     */
    void getAffectSystemExcel(AlarmDetailParams params, HttpServletResponse response) throws IOException;

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-影响业务统计
     * @param params 请求参数
     * @return
     */
    PageDataInfo getAffectBusiness(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-影响业务统计-下载
     * @param params 请求参数
     * @return
     */
    void getAffectBusinessExcel(AlarmDetailParams params, HttpServletResponse response);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-区域告警统计分析
     * @param params 请求参数
     * @return
     */
    List<BusiAreaAlarmStatVo> getAreaAlarmAnalysis(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-共用步骤分析
     * @param params 请求参数
     * @return
     */
    PageDataInfo getPublicStepAnalysis(AlarmDetailParams params);

    /**
     * BPM 4.0
     * 运维工作台-告警详情分析-共用步骤接口分析-下载
     * @param params 请求参数
     * @return
     */
    void getPublicStepAnalysisExcel(AlarmDetailParams params, HttpServletResponse response);
}
